<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        // 先在栈区开辟空间用于存储arr变量的值
        // 对于数组将数组的元素值都存在了堆区保存
        // 当执行arr = [1, 2, 3] 会在堆区开辟空间存储数据 然后在arr变量栈区记录堆区的数据地址
        let arr = [1, 2, 3];
        // 当执行tmp = arr的时候 将arr栈区记录的堆区地址复制一份保存到tmp栈区记录
        let tmp = arr;
        // 根据栈区记录地址找到堆区第一个元素修改值
        // tmp[0] = 100;

        // console.log(arr);

        // 重新再堆区开辟空间保存数组元素[3,4,5],再将tmp栈区记录的地址修改为新的堆区地址
        tmp = [3, 4, 5];
        console.log(arr);
        /*
            引用类型相互赋值之后
            如果一个变量修改
            a)顺着内存地址修改的数据 两个变量都受到影响
            b)如果是将其中一个变量赋值修改 两个变量又相互独立
        */

    </script>
</body>

</html>